/*
 * 文件名： MerchantSettledRemoteService.java
 * 
 * 工程名称: remote-bank
 *
 * Gopay
 *
 * 创建日期： 2017年12月29日
 *
 * Copyright(C) 2017, by www.gopay.com.cn Inc.All rights reserved.
 *
 * 原始作者: 宣广海
 *
 */
package com.gopay.remote.bank.foundation;

import com.gopay.common.Result;
import com.gopay.common.domain.bank.MerchantSettledRequest;
import com.gopay.common.domain.bank.merchant.MerchantSettledOrgReqMsg;
import com.gopay.common.domain.bank.merchant.contract.req.ContractAddReqMsg;
import com.gopay.common.domain.bank.merchant.contract.req.ContractDeleteReqMsg;
import com.gopay.common.domain.bank.merchant.contract.req.ContractEditReqMsg;
import com.gopay.common.domain.bank.merchant.contract.req.ContractPayFeeReqMsg;
import com.gopay.common.domain.bank.merchant.contract.req.ContractRelateReqMsg;
import com.gopay.common.domain.bank.merchant.mer.req.MechantAddReqMsg;
import com.gopay.common.domain.bank.merchant.mer.req.MerchantDeleteReqMsg;
import com.gopay.common.domain.bank.merchant.mer.req.MerchantEditReqMsg;
import com.gopay.common.domain.bank.merchant.shop.req.ShopAddReqMsg;
import com.gopay.common.domain.bank.merchant.shop.req.ShopDeleteReqMsg;
import com.gopay.common.domain.bank.merchant.shop.req.ShopEditReqMsg;
import com.gopay.common.domain.bank.merchant.shop.req.ShopOpenIdReqMsg;
import com.gopay.common.exception.GopayException;

/**
 * 聚合支付商户入驻相关业务
 *
 * @author 宣广海
 *
 * @version 
 *
 * @since 2017年12月29日
 */
public interface MerchantSettledRemoteService {
	/**
	 * 
	 * 功能描述：添加商户业务接口
	 *
	 * @param msg
	 * @return
	 * @throws GopayException
	 * 
	 * @author 宣广海
	 *
	 * @since 2018年1月2日
	 *
	 * @update:[变更日期YYYY-MM-DD][更改人姓名][变更描述]
	 */
	Result merchantAdd(MerchantSettledRequest<MechantAddReqMsg> request) throws GopayException;
	/**
	 * 
	 * 功能描述：编辑商户业务接口
	 *
	 * @param msg
	 * @return
	 * @throws GopayException
	 * 
	 * @author 宣广海
	 *
	 * @since 2018年1月2日
	 *
	 * @update:[变更日期YYYY-MM-DD][更改人姓名][变更描述]
	 */										   
	Result merchantEdit(MerchantSettledRequest<MerchantEditReqMsg> request) throws GopayException;
	/**
	 * 
	 * 功能描述：删除商户业务接口
	 *
	 * @param msg
	 * @return
	 * @throws GopayException
	 * 
	 * @author 宣广海
	 *
	 * @since 2018年1月2日
	 *
	 * @update:[变更日期YYYY-MM-DD][更改人姓名][变更描述]
	 */
	Result merchantDelete(MerchantSettledRequest<MerchantDeleteReqMsg> request) throws GopayException;
	/**
	 * 
	 * 功能描述：商户分类业务接口
	 *
	 * @param msg
	 * @return
	 * @throws GopayException
	 * 
	 * @author 宣广海
	 *
	 * @since 2018年1月2日
	 *
	 * @update:[变更日期YYYY-MM-DD][更改人姓名][变更描述]
	 */
	@SuppressWarnings("rawtypes")
	Result merchantMctClass(MerchantSettledRequest request) throws GopayException;
	/**
	 * 
	 * 功能描述：城市编码业务接口
	 *
	 * @param msg
	 * @return
	 * @throws GopayException
	 * 
	 * @author 宣广海
	 *
	 * @since 2018年1月2日
	 *
	 * @update:[变更日期YYYY-MM-DD][更改人姓名][变更描述]
	 */
	@SuppressWarnings("rawtypes")
	Result merchantCitic(MerchantSettledRequest request) throws GopayException;
	
	/**
	 * 
	 * 功能描述：添加门店业务接口
	 *
	 * @param msg
	 * @return
	 * @throws GopayException
	 * 
	 * @author 宣广海
	 *
	 * @since 2018年1月2日
	 *
	 * @update:[变更日期YYYY-MM-DD][更改人姓名][变更描述]
	 */
	Result shopAdd(MerchantSettledRequest<ShopAddReqMsg> request) throws GopayException;
	/**
	 * 
	 * 功能描述：编辑门店业务接口
	 *
	 * @param msg
	 * @return
	 * @throws GopayException
	 * 
	 * @author 宣广海
	 *
	 * @since 2018年1月2日
	 *
	 * @update:[变更日期YYYY-MM-DD][更改人姓名][变更描述]
	 */
	Result shopEdit(MerchantSettledRequest<ShopEditReqMsg> request) throws GopayException;
	/**
	 * 
	 * 功能描述：删除门店业务接口
	 *
	 * @param msg
	 * @return
	 * @throws GopayException
	 * 
	 * @author 宣广海
	 *
	 * @since 2018年1月2日
	 *
	 * @update:[变更日期YYYY-MM-DD][更改人姓名][变更描述]
	 */
	Result shopDelete(MerchantSettledRequest<ShopDeleteReqMsg> request) throws GopayException;
	/**
	 * 
	 * 功能描述：获取门店openId和openKey
	 *
	 * @param msg
	 * @return
	 * @throws GopayException
	 * 
	 * @author 宣广海
	 *
	 * @since 2018年1月2日
	 *
	 * @update:[变更日期YYYY-MM-DD][更改人姓名][变更描述]
	 */
	Result shopOpenId(MerchantSettledRequest<ShopOpenIdReqMsg> request) throws GopayException;
	/**
	 * 
	 * 功能描述：获取合同支付方式业务接口
	 *
	 * @param msg
	 * @return
	 * @throws GopayException
	 * 
	 * @author 宣广海
	 *
	 * @since 2018年1月2日
	 *
	 * @update:[变更日期YYYY-MM-DD][更改人姓名][变更描述]
	 */
	@SuppressWarnings("rawtypes")
	Result contractPayList(MerchantSettledRequest request) throws GopayException;
	/**
	 * 
	 * 功能描述：获取合同支付方式费率
	 *
	 * @param msg
	 * @return
	 * @throws GopayException
	 * 
	 * @author 宣广海
	 *
	 * @since 2018年1月2日
	 *
	 * @update:[变更日期YYYY-MM-DD][更改人姓名][变更描述]
	 */
	Result contractPayFee(MerchantSettledRequest<ContractPayFeeReqMsg> request) throws GopayException;
	/**
	 * 
	 * 功能描述：添加合同业务接口
	 *
	 * @param msg
	 * @return
	 * @throws GopayException
	 * 
	 * @author 宣广海
	 *
	 * @since 2018年1月2日
	 *
	 * @update:[变更日期YYYY-MM-DD][更改人姓名][变更描述]
	 */
	Result contractAdd(MerchantSettledRequest<ContractAddReqMsg> request) throws GopayException;
	/**
	 * 
	 * 功能描述：编辑合同业务接口
	 *
	 * @param msg
	 * @return
	 * @throws GopayException
	 * 
	 * @author 宣广海
	 *
	 * @since 2018年1月2日
	 *
	 * @update:[变更日期YYYY-MM-DD][更改人姓名][变更描述]
	 */
	Result contractEdit(MerchantSettledRequest<ContractEditReqMsg> request) throws GopayException;
	/**
	 * 
	 * 功能描述：删除合同业务接口
	 *
	 * @param msg
	 * @return
	 * @throws GopayException
	 * 
	 * @author 宣广海
	 *
	 * @since 2018年1月2日
	 *
	 * @update:[变更日期YYYY-MM-DD][更改人姓名][变更描述]
	 */
	Result contractDelete(MerchantSettledRequest<ContractDeleteReqMsg> request) throws GopayException;
	/**
	 * 
	 * 功能描述：合同关联门店
	 *
	 * @param msg
	 * @return
	 * @throws GopayException
	 * 
	 * @author 宣广海
	 *
	 * @since 2018年1月2日
	 *
	 * @update:[变更日期YYYY-MM-DD][更改人姓名][变更描述]
	 */
	Result contractRelateShop(MerchantSettledRequest<ContractRelateReqMsg> request) throws GopayException;
	/**
	 * 
	 * 功能描述：文件上传接口
	 *
	 * @param msg
	 * @return
	 * @throws GopayException
	 * 
	 * @author 宣广海
	 *
	 * @since 2018年1月2日
	 *
	 * @update:[变更日期YYYY-MM-DD][更改人姓名][变更描述]
	 */
	Result uplodeFile(MerchantSettledRequest<MerchantSettledOrgReqMsg> request) throws GopayException;


}
